import request from "@/utils/request";

const WORKORDER_BASE_URL = "/admin/workorder";

const WorkOrderAPI = {
  /**
   * 获取工单分页列表
   * @param {Object} queryParams 查询参数
   * @returns {Promise} 工单分页列表
   */
  getPage(queryParams) {
    return request({
      url: `${WORKORDER_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    }).then((page) => {
      return {
        records: page.records || page.list || [],
        total: page.total || 0,
        current: page.current || page.pageNum || 1,
        size: page.size || page.pageSize || 10,
      };
    });
  },

  /**
   * 根据ID获取工单详情
   * @param {string} id 工单ID
   * @returns {Promise} 工单详情
   */
  getById(id) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}`,
      method: "get",
    });
  },

  /**
   * 创建工单
   * @param {Object} data 工单表单数据
   * @returns {Promise} 创建结果
   */
  create(data) {
    return request({
      url: `${WORKORDER_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新工单
   * @param {string} id 工单ID
   * @param {Object} data 工单表单数据
   * @returns {Promise} 更新结果
   */
  update(id, data) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 派发工单
   * @param {string} id 工单ID
   * @param {string} assigneeId 指派人ID
   * @returns {Promise} 派发结果
   */
  assign(id, assigneeId) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}/assign`,
      method: "put",
      params: { assigneeId },
    });
  },

  /**
   * 更新工单状态
   * @param {string} id 工单ID
   * @param {string} status 状态
   * @returns {Promise} 更新结果
   */
  updateStatus(id, status) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}/status`,
      method: "put",
      params: { status },
    });
  },

  /**
   * 完成工单
   * @param {string} id 工单ID
   * @param {string} description 完成描述
   * @returns {Promise} 完成结果
   */
  complete(id, description) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}/complete`,
      method: "put",
      params: { description },
    });
  },

  /**
   * 评价工单
   * @param {string} id 工单ID
   * @param {string} evaluation 评价内容
   * @returns {Promise} 评价结果
   */
  evaluate(id, evaluation) {
    return request({
      url: `${WORKORDER_BASE_URL}/${id}/evaluate`,
      method: "put",
      params: { evaluation },
    });
  },

  /**
   * 根据设备ID查询工单
   * @param {string} deviceId 设备ID
   * @returns {Promise} 工单列表
   */
  findByDeviceId(deviceId) {
    return request({
      url: `${WORKORDER_BASE_URL}/device/${deviceId}`,
      method: "get",
    });
  },

  /**
   * 根据站点ID查询工单
   * @param {string} siteId 站点ID
   * @returns {Promise} 工单列表
   */
  findBySiteId(siteId) {
    return request({
      url: `${WORKORDER_BASE_URL}/site/${siteId}`,
      method: "get",
    });
  },
};

export default WorkOrderAPI;
